package features.advance.leetcode.linkedlist.easy;

import features.advance.leetcode.geometry.doublepointer.easy.ListNode;
import features.advance.leetcode.util.TreeUtil;

/**
 *  83. 删除排序链表中的重复元素
 * 存在一个按升序排列的链表，给你这个链表的头节点 head ，请你删除所有重复的元素，使每个元素 只出现一次 。
 *
 * 返回同样按升序排列的结果链表。
 *
 *
 *
 * 示例 1：
 *
 *
 * 输入：head = [1,1,2]
 * 输出：[1,2]
 * 示例 2：
 *
 *
 * 输入：head = [1,1,2,3,3]
 * 输出：[1,2,3]
 *
 *
 * 提示：
 *
 * 链表中节点数目在范围 [0, 300] 内
 * -100 <= Node.val <= 100
 * 题目数据保证链表已经按升序排列
 *
 * @author LIN
 * @date 2021-11-08 10:46
 */
public class Solution83 {

    public static void main(String[] args) {
        Solution solution = new Solution() {
        };
        ListNode root = TreeUtil.parseLinkedList("[1,1,2]");
        ListNode listNode = solution.deleteDuplicates(root);
        System.out.println(listNode);
    }

    static class Solution {
        /**
         * 输入的链表是，升序排列后的
         * @param head
         * @return
         */
        public ListNode deleteDuplicates(ListNode head) {
            ListNode cur = head;
            while (cur != null){
                ListNode next = cur.next;
                if(next != null && next.val == cur.val){
                    cur.next = next.next;
                }else{
                    cur = next;
                }
            }
            return head;
        }
    }
}
